Software products include software code. A software product is also interchangeably referred to herein as a “product” unless expressly distinguished where used. The software code is also interchangeably referred to herein as “code”, “product code”, or “software” unless expressly distinguished where used.
The code of a software product has to be tested. The testing is generally performed using a large set of test cases. In many cases, the testing using the test cases is automated.
These tests are executed after changes have been made to the product code. If in a test execution, some of the previously passing tests begin to fail, the cause of the failures must be found. Where the software product's testing environment, the tests themselves, and other factors affecting the product and tests have not changed, it can be assumed that any change in the test results is caused by the set of code changes.
Regression of software is an occurrence of an error or a failure in the software where the error or failure was previously not observed. In other words, software regression is the opposite of making process in software, i.e., instead of removing a failure or error from the software, a failure, error, or other undesirable behavior has been introduced into the software.